/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.com.ugto.caadi.asistencias.sql;

import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import mx.com.ugto.caadi.asistencias.bean.view.MateriaView;
import static mx.com.ugto.caadi.asistencias.util.ConexionSQL.*;

/**
 *
 * @author Maestria
 */
public class MateriaSQL {

    public static List<MateriaView> listarMaterias() {
        PreparedStatement pst = null;
        List<MateriaView> lstMaterias = new ArrayList<MateriaView>();
        Connection cn = null;
        try {
            String query = "select "
                    + "numMateriaID, ni.strNombre, gr.strNombre, ma.strNombresMaestro, "
                    + "ma.strApellidosMaestro, mat.datPeriodo, mat.numSemestre FROM materia mat "
                    + "inner join maestro ma on mat.numMaestroID=ma.numMaestroID "
                    + "inner join nivel ni on mat.numNivelID=ni.numNivelID "
                    + "inner join grupo gr on mat.numGrupoID=gr.numGrupoID;";
            cn = getConexion();
            pst = cn.prepareStatement(query);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                int numMateriaID = rs.getInt(1);
                String niStrNombre = rs.getString(2);
                String grStrNombre = rs.getString(3);
                String maStrNombresMaestro = rs.getString(4);
                String maStrApellidosMaestro = rs.getString(5);
                int matDatPeriodo = rs.getInt(6);
                int matNumSemestre = rs.getInt(7);
                //--
                MateriaView mv = new MateriaView();
                mv.setNumMateriaID(numMateriaID);
                mv.setNivelNombre(niStrNombre);
                mv.setGrupoNombre(grStrNombre);
                mv.setMaestroNombre(maStrNombresMaestro);
                mv.setMaestroApellidos(maStrApellidosMaestro);
                mv.setDatPeriodo(matDatPeriodo);
                mv.setNumSemestre(matNumSemestre);
                lstMaterias.add(mv);
            }
//            for (MateriaView materiaView : lstMaterias) {
//                System.out.println(materiaView);
//            }
//            System.out.println(lstMaterias.size());
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (cn != null) {
                try {
                    cn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            return lstMaterias;
        }
    }
    
    public static void main(String[] args) {
        listarMaterias();
    }
}
